命令的解释与执行
单例类 Command
用于处理控制器下达的命令。
字段
id
说明:命令的标识符,类型为 integer
。
注解: 控制器在下达命令时,会为每条命令分配一个唯一的标识符。执行器在取命令时根据标识符来区分两条名称相同的指令是否为同一条指令。
不应该直接修改此字段,而应该通过
update
更新此字段。
name
说明:命令的名称。 可取下列值:
命令 | 说明 |
---|---|
Command.CMD_NOP | 不执行任何操作 |
Command.CMD_START_GAME_ROOM | 点击“开始游戏”按钮以开始一局新的游戏 |
Command.CMD_CHOOSE_CHARACTER | 执行选择角色操作 |
Command.CMD_DEFAULT_IDLE | 执行默认挂机动作 |
Command.CMD_EXTENDED_IDLE | 执行扩展挂机动作 |
Command.CMD_CONFIRM_RESULTS | 执行结算确认操作 |
Command.CMD_CREATE_GAME_ROOM | 创建游戏房间 |
Command.CMD_BATCH_COMBINE_PARTS | 在制造所批量合成配件 |
Command.CMD_BATCH_PURCHASE_ITEM | 在商店内批量兑换指定物品 |
Command.CMD_LOCATE_CURSOR | 定位鼠标光标位置 |
Command.CMD_CLEAR_POPUS | 尝试清除所有弹窗 |
注解:随着执行器版本更新,会增加支持的命令。
不应该直接修改此字段,而应该通过
update
更新此字段。
timestamp
说明:命令下达的时间戳(单位为秒),类型为 integer
。
控制器在下达命令时以 UNIX 时间戳(单位为秒)的形式告知执行器该条命令下达的时刻。默认情况下,每条命令都具有 5 秒的有效期,超过该有效期的命令将被忽略。有效期机制可以确保在控制器因诸种因素1无法继续下达命令时,执行器在尽可能短的时间内停止执行,以最大程度减少对系统带来的影响。
不应该直接修改此字段,而应该通过
update
更新此字段。
repeatable
说明:命令是否可重复,类型为 boolean
。
注解:用于指明在一条命令的有效期内,是否重复执行该条命令。 例如,CMD_BATCH_COMBINE_PARTS
用于命令执行器执行合成配件的动作,执行一次配件合成的时间往往很短,若这样的命令只执行一次便停止,则控制器将不得不频繁地为同样的命令申请新的命令标识符(前面提到,标识符是区分两条指令是否为同一条指令的依据),并将新的命令标识符写入命令文件,造成额外的性能开销,引入该字段可以解决此问题。
不应该直接修改此字段,而应该通过
update
更新此字段。
finished
说明:命令是否执行完毕,类型为 boolean
。
注解:对于可重复命令,该字段应始终保持为 false
。
不应直接修改此字段,而应该通过调用
finish
修改。
status
说明:调用 update
更新命令后,命令的状态变化情况,可为下列标志位的组合。
标志 | 说明 | 值 |
---|---|---|
Command.UNCHANGED | 与上一次相比未发生任何变化 | 0x0 |
Command.INDENTIFIER_CHANGED | 与上一次相比,标识符发生改变 | 0x1 |
Command.TYPE_CHANGED | 与上一次相比,命令名称发生改变 | 0x2 |
Command.TIMEPOINT_CHANGED | 与上一次相比,命令的时间戳发生改变 | 0x4 |
Command.REPEATABILITY_CHANGED | 与上一次相比,命令的可重复性发生改变 | 0x8 |
应通过
get_status
方法获取该字段的值。
方法
update
原型:Command:update()
说明:读取命令文件,更新当前命令,并根据命令变化情况设置 status
。
get_status
原型:Command:get_status()
说明:获取命令的状态变化情况。
返回值:命令变化情况,即 status
字段。
claim
原型:Command:claim()
说明:领取当前需要执行的命令。
返回值:命令,例如 Command.CMD_NOP
。
finish
原型:Command:finish()
说明:将当前命令标记为已完成。
注解:对于可重复命令,调用该方法后命令仍将处于未完成状态,即 finished
字段一直保持为 false
。
脚注
在此前对集成工具的稳定性测试结果表明,连续数个星期(甚至数个月)保持计算机开启,并在此期间一直使用集成工具的挂机功能。计算机在长时间开启的情况下,可能存在由其他应用程序导致的内存泄漏(不同计算机内存泄漏情况存在较大差异,与其上运行的软件有关),进而造成系统可用内存空间不足,使控制器无法继续正常运行。↩︎